<?php 
header("Content-type: text/html; charset=utf-8");

require_once('auth_i.inc.php');

require_once('pdkparse.inc.php');

$show_info = "";

if (!empty($_FILES) && ($_FILES['file']['error'] == 0) && (is_uploaded_file($_FILES['file']['tmp_name'])))
{
    $info = parse_pdk_file($_FILES['file']['tmp_name']);
}

if (isset($_POST['action']))
{
    switch ($_POST['action'])
    {
        case '_add':

            if (!isset($info))
            {
                $show_info = 'Контроллер не добавлен:\nНеправильный или не задан файл программы.';
                break;
            }

            $sts = $dbh->prepare('select count(*) as count from network_map where c_id=:cid');
        
                if ($sts->execute(array('cid' => $info['c_num'])))
                {
                    if ($res = $sts->fetchAll())
                    {
                        if ($res[0]['count'] > 0)
                        {
                    $show_info = 'Контроллер не добавлен:\nКонтроллер с номером:'. $info['c_num'] .' уже есть в сети.';
                    break;
                        }
                    }    
                }

            $sth = $dbh->prepare('insert into network_map ' .
                '(c_id, g_id, location, enc_key, next_enc_key, program, prog_load_time, prog_update_status)'.
                ' values (:cid, :gid, :location, :key, :key, :program, NOW(), 0)');

            $sth->bindParam(':cid',$info['c_num'], PDO::PARAM_INT);
            $sth->bindParam(':key',$info['key']);
            $sth->bindParam(':program',$info['program']);
            $sth->bindParam(':gid',$_POST['group'], PDO::PARAM_INT);
            $sth->bindParam(':location', $_POST['location']);

            if ($sth->execute())
            {
                $show_info = 'Добавлен контроллер номер: ' . $info['c_num'] . '\nКлюч: ' . $info['key'];
            }
            else
            {
                $err_arr = $sth->errorInfo();
                $show_info = 'Контроллер не добавлен:' . $err_arr[2];
            }

        break;
        
        case '_edit':

            if (!isset($info))
            {
                $sth = $dbh->prepare('update network_map set g_id=:gid, location=:location where c_id = :cid');

                $sth->bindParam(':cid',intval($_POST['c_id']), PDO::PARAM_INT);
                $sth->bindParam(':gid',intval($_POST['group']), PDO::PARAM_INT);
                $sth->bindParam(':location', $_POST['location']);

                if ($sth->execute())
                {
                $show_info = '';
                }
                else
                {
                $err_arr = $sth->errorInfo();
                $show_info = 'Ошибка при изменении контроллера:' . $err_arr[2];
                }
            
                break;
            }
            
            if ($info['c_num'] != $_POST['c_id'])
            {
                $show_info = 'Контроллер не может быть отредактирован:\nНомер контроллера в программе '.$info['cnum'].'не соответсвует номеру контроллера: ' . $_POST['c_id'];
                break;
            }

            $sth = $dbh->prepare('update network_map set g_id=:gid, location=:location, next_enc_key=:key, '.
                        'program=:program, prog_update_status=0, prog_load_time=NOW() '.
                        'where c_id = :cid');

            $sth->bindParam(':cid',intval($info['c_num']), PDO::PARAM_INT);
            $sth->bindParam(':key',$info['key']);
            $sth->bindParam(':program',$info['program']);
            $sth->bindParam(':gid',intval($_POST['group']), PDO::PARAM_INT);
            $sth->bindParam(':location', $_POST['location']);

            if ($sth->execute())
            {
                $show_info = 'Контроллер номер: ' . $info['c_num'] . 'изменен! \nКлюч: ' . $info['key'];
            }
            else
            {
                $err_arr = $sth->errorInfo();
                $show_info = 'Ошибка при изменении контроллера:' . $err_arr[2];
            }

        break;

    }
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>

<head>
    <title>Управление контроллерами.</title>
    <?php
        require_once('headers.inc.php');
    ?>
    <script src="cmap.js" type="text/javascript"></script>

    <script type="text/javascript">

<?php
    if (!empty($show_info))
    {
        echo 'alert("'. $show_info .'");'; 
    }
?>
  
    </script>

</head>

<body>


<?php // menu bar
    require_once('menu.inc.php');

    print menu($menu_items, 'cmap.php');
?>


<div id="add-form" title="Новый контроллер">
    <form id="post-form" enctype="multipart/form-data" action="cmap.php" method="post" class="FormGrid">

        <table id="cont-form-table">
         <tr>
          <td id="label">
            <label for="group">Группа</label>
          </td>
          <td id="data">  
            <select name="group" id="group" size="1" class="FormElement ui-widget-content ui-corner-all"> </select>
          </td>
         </tr>

         <tr>
          <td id="label">
           <label for="location">Название СО</label>
          </td>
          <td id="data">  
           <input type="text" name="location" id="location" value="" class="FormElement ui-widget-content ui-corner-all" />
          </td>
         </tr>

        <tr>
         <td id="label">
          <label for="file">Проект (.pdk)</label>
         </td>
         <td id="data">   
          <input type="file" name="file" id="file" value="" class="FormElement ui-widget-content ui-corner-all"/>
         </td>
        </tr>

        </table>

        <input type="hidden" name="action" value="_add"/>
        <input type="hidden" name="c_id" value="-1" />
    </form>
</div>

<input type="hidden" name="cont_id" value=""/>  


<div id="right-info">
        <button id="add-button">Добавить</button>
        <button id="edit-button">Редактировать</button> 
        <button id="remove-button">Удалить</button>
        <button id="full-log-button">Журнал</button>
        <button id="load-button">Загрузить проект в контроллер</button>   
        <button id="set-time-button">Синхронизация времени</button>
</div>

<div id="content">
    <table id="list"></table> 
</div>

<div id="bottom">
    <table id="con-info-table" class="ui-jqgrid" cellspacing="0">
        <tr><td id="head">Статус подключения:</td><td id="online"></td></tr> 
        <tr><td id="head">Ключ текущего проекта:</td><td id="cur-key"></td></tr>
        <tr><td id="head">Ключ нового проекта:</td><td id="next-key"></td></tr>
        <tr><td id="head">Ключ предыдущего проекта:</td><td id="prev-key"></td></tr>
        <tr><td id="head">Проект загружен на сервер:</td><td id="load-date"></td></tr>
        <tr><td id="head">Проект загружен в контроллер:</td><td id="active-date"></td></tr>
    </table>
</div>

</body>
</html>